
/*
 * Copyright (C) 2008-2009 Archie L. Cobbs. All rights reserved.
 *
 * $Id$
 */

package org.dellroad.sidekar.query;

import java.util.Map;
import java.util.NavigableMap;

/**
 * Sidekar {@link Query} results that are presented in the form of a navigable map.
 */
public interface QueryMap<K, V> extends Query, NavigableMap<K, V> {

    @Override
    QuerySet<K> descendingKeySet();

    @Override
    QueryMap<K, V> descendingMap();

    @Override
    QuerySet<Map.Entry<K, V>> entrySet();

    @Override
    QueryMap<K, V> headMap(K toKey);

    @Override
    QueryMap<K, V> headMap(K toKey, boolean inclusive);

    @Override
    QuerySet<K> keySet();

    @Override
    QuerySet<K> navigableKeySet();

    @Override
    QueryMap<K, V> subMap(K fromKey, boolean fromInclusive, K toKey, boolean toInclusive);

    @Override
    QueryMap<K, V> subMap(K fromKey, K toKey);

    @Override
    QueryMap<K, V> tailMap(K fromKey);

    @Override
    QueryMap<K, V> tailMap(K fromKey, boolean fromInclusive);

    @Override
    QueryCollection<V> values();
}

